﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 适配器模式
{
    //美国球员类
    interface IPlayer
    {
        string Name //属性也是方法
        {
            get;
            set;
        }
        void Attack();
        void Defence();
    }

    //前锋，实现接口IPlayer
    class Forwards : IPlayer
    {
        string name;
        public string Name   //实现接口中的属性
        {
            get { return name; }
            set { name = value; }
        }
        public void Attack()
        {
            Console.WriteLine("前锋 {0} 进攻", name);
        }
        public void Defence()
        {
            Console.WriteLine("前锋 {0} 防守", name);
        }
    }

    //中锋，实现接口IPlayer
    class Center : IPlayer
    {
        string name;
        public string Name   //实现接口中的属性
        {
            get { return name; }
            set { name = value; }
        }
        public void Attack()
        {
            Console.WriteLine("中锋 {0} 进攻", name);
        }
        public void Defence()
        {
            Console.WriteLine("中锋 {0} 防守", name);
        }
    }


    //外籍中锋，不实现接口IPlayer（跟此接口不兼容）例如姚明不懂外语，所以与美国球员类不兼容
    //为了用play，需要一个适配器类（翻译类）
    class CenterForeign
    {
        string name;
        public string Name   //实现接口中的属性
        {
            get { return name; }
            set { name = value; }
        }
        public void Attack()
        {
            Console.WriteLine("外籍中锋 {0} 进攻", name);
        }
        public void Defence()
        {
            Console.WriteLine("外籍中锋 {0} 防守", name);
        }
    }
}
